import pandas as pd
import matplotlib.pyplot as plt

# 设置matplotlib以显示中文和负号
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 读取Excel文件
df = pd.read_excel('D:\PyCharm 2022.3\douban\豆瓣电影top250数据.xlsx')

# 提取电影类型，并处理成列表形式，由于一个电影可能有多个类型，所以我们需要拆分它们
movie_types = df['上映时间、电影类型'].apply(lambda x: x.split('/')[-1].strip().split())

# 创建一个空的字典来存储每种类型的数量
type_count = {}

# 遍历movie_types列表，统计每种类型的数量
for types in movie_types:
    for type in types:
        if type in type_count:
            type_count[type] += 1
        else:
            type_count[type] = 1

# 将字典转换为DataFrame，便于绘图
type_df = pd.DataFrame.from_dict(type_count, orient='index', columns=['数量'])

# 绘制直方图
type_df.plot(kind='bar', figsize=(14, 8), color='skyblue')
plt.title('每种类型的电影数量')
plt.xlabel('电影类型')
plt.ylabel('数量')
plt.xticks(rotation=45, ha='right')  # 旋转x轴标签，避免重叠
plt.tight_layout()  # 自动调整子图参数, 使之填充整个图像区域
plt.show()